package chujisuanfa;

public class Match {
    public boolean isMatch(String s, String p) {
        int ns = 0,np =0;
        while(ns<s.length()&&np<p.length()){
            if (s.charAt(ns)!=p.charAt(np)){
                if(p.charAt(np)=='.'){//如果p当前可以是任意字符
                    ns++;
                    np++;
                }else if(p.charAt(np)=='*'&&np!=0){
                    if (p.charAt(np-1)==s.charAt(ns)){//如果*前一个和当前s匹配
                        ns++;
                    }else if (p.charAt(np-1)=='.'){
                        ns++;
                    }else{//如果*前一个和当前s不匹配，p往后走
                        np++;
                    }
                }else{
                    if (np<p.length()-1&&p.charAt(np+1)=='*'){//如果p后一个是*
                        np++;
                    }else return false;
                }
            }else{
                //如果是相同a-z字符，直接匹配到下一个
                ns++;
                np++;
            }
        }

        while(np<p.length()){
            if (p.charAt(np)=='.') return false;
            if (p.charAt(np)=='*') np++;
            if (np<p.length()-1&&p.charAt(np+1)=='*') np++;
            if (np<p.length()&&p.charAt(np)!='*') return false;
        }
        if (ns<s.length()) return  false;

        return true;
    }

    public static void main(String[] args) {
        Match match = new Match();
            System.out.println(match.isMatch("aaa","a*a"));
    }
}
